#ifndef SHAPEDYNAMICOGRE_H
#define SHAPEDYNAMICOGRE_H

/**********************************
*          INCLUDES
**********************************/
//parent
#include "shapeDynamic.h"

//Ogre headers
#include "Ogre.h"
using namespace Ogre;

/**********************************
*          FORWARD DECLARATIONS
**********************************/

//game
class GameOgre;

//title
class ObjectTitle;

//ability

#include <string>

/**********************************
*          CLASS
**********************************/
class ShapeDynamicOgre : public ShapeDynamic //, public OgreAnimation
{

public:
ShapeDynamicOgre(unsigned int index, Game* game, Client* client, Vector3D* position, Vector3D* velocity, Vector3D* rotation, Ogre::Root* root,
	  bool animated, bool collidable, float collisionRadius, int meshCode, bool ai);
~ShapeDynamicOgre();

/**********************************
*          VARIABLES
**********************************/
//ogre scene stuff
SceneNode*          mSceneNode;



//ability

/**********************************
*          METHODS
**********************************/
//shape
void createShape();
std::string getMeshString(int meshCode);

//size
void scale(Vector3D scaleVector);

//movement
float getDegreesToSomething(Vector3D* vectorOfSomething);
void yaw        (float amountToYaw, bool converToDegree   );
void translate  (Vector3D* translateVector, int perspective);
void setPosition(Vector3D* position                        );
void setPosition(float x, float y, float z                );
void setVisible (bool visible                             );
void setRotation(Vector3D* vector3D);

//check position
Vector3D* getPosition          (                                         );

//check rotation
Vector3D* getRotation();

//ogre scene node
SceneNode*  getSceneNode() { return mSceneNode; }

//utility
Ogre::Vector3 converToVector3(Vector3D* vector3d);



};

#endif

